[AWS GameDay] DevOpsエンジニアが全員退職した会社の新入社員としてAWS環境の運用・改善をしてきました
どうも、 もこ@札幌オフィス です。
私事とはなりますが、先日「Unicorn Rentals」というユニコーンを貸し出すスタートアップ企業に転職しまして、ユニコーンを使って初出社している最中です。
皆さんご存じの通り、世の中の車・バス・電車などの交通手段は全てユニコーンに置き換えられ、近年ユニコーンの貸し出し事業は盛んになりつつあります。
Unicorn Rentalsではビジネスの主軸となるサービスをAWS上で運用しています。
オフィスに着くと入社オリエンテーション担当の人事の方がこう言いました。
「DevOpsチームは昨日全員退職してしまった。まあ、大した人たちじゃ無かったから、君の活躍に期待してるよ」
どうやら私の仕事はDevOpsチームが残したAWS環境を改善して、負荷対策を行ったり 環境を構築したり、AWSレイヤーでトラブルシュートをしたり、チューニングをする必要があるみたいです。
なお、本記事はUnicorn Rentalsの退職エントリーとなります。
Unicorn Rentalsとは入社時にNDAを結んでいるので具体的な業務内容については触れられませんが、今後Unicorn Rentals(GameDay)に入社(参加)される方、Unicorn Rentals(GameDay)に興味を持っている方に役立ちそうな一般的な流れと一般的な監視などについてご紹介していきます。
また、Unicorn Rentals CEOが会社紹介(?)をしている動画もありますので合わせてご覧下さい。
入社
GameDayは上記導入のようなUnicorn Rentalsという仮想の会社に入社した設定で、AWS環境の改善・障害対応などを行って、スコアを競い合うイベントです。
まずはじめに求人(GameDayのイベント情報)を探しましょう。
今回私は WorldSkills のプレ大会ということで参加させて頂きました。
毎年re:Inventで開催されているほか、APN Partner様向け AWS GameDay Online ~ APN杯 ~などでも開催されている場合がありますので、申し込んでみて下さい。
会場(今回はリモート)に着くとAWSの方が上記のような導入、具体的なGameDayのルール説明が行われます。
業務内容
上記にも少し記述しましたが、基本的には「既にあるAWS環境を改善しつつ、様々なトラブルや障害、攻撃を修復する」物となります。
サービスを安定稼働させるとスコアが加算される仕組みとなっています。
なお、AWS環境は既にアプリケーションが動いているUnicorn Rentals社(AWS)のアカウントを使いますので、用意する物は特にございません。
もちろんAWS費用についてもUnicorn Rentals社(AWS)持ちです。(焦ってインスタンス15台くらい建ててすみません)
具体的な内容については触れられませんが、GameDayのダッシュボード画面から現在のスコアやランクなどが見れます。
障害に対処する
様々な障害が注入されますので、「AWS環境が今どうなっているのか」を適切に判断する必要があります。
例えば、ALBですと UnHealthyHostCount
を見たり、 TargetResponseTime
HTTPCode_Target_5XX_Count
などのメトリクスを監視したりすると良いと思います。
私の場合はAlarmを仕込む時間が無かったので、CloudWatch Dashboardを利用してサービスに影響が出ている事を確認出来るメトリクスをかき集めて可視化していました。
その他にも、一般的なAWSでの冗長化構成の構築パターンを頭に入れて、実際に動いている環境の構成を変更したり、ダウンタイムを起こさないようにインスタンスを入れ替えたりなどなど、、やれることはたくさんあると思います。
障害の切り分け
GameDayでは頻繁に障害が発生しますので、上記などの方法で障害を確認してからの切り分けとサービス復旧を迅速に行う必要があります。
例えば、ALBが正常に機能していない場合
- CloudWatchで周辺メトリクスを調査
- ALBのListenerルール、SGを確認
- ターゲットグループのヘルスチェックが落ちていないかを確認
- (落ちている場合)ALB=>EC2の通信経路に問題が無いのかを確認
- (落ちている場合)EC2に直接HTTPして帰ってくるのかを確認
- (落ちていない場合)ALB=>IGW間の経路を確認
- 必要に応じてVPC Flow Logs / ALB Logの調査等
などなど、基礎的な内容とはなりますが、どこが原因なのかを素早く調査して切り分けていく必要があります。
なお、サービスがダウンしている最中は減点もされるため、可用性は重要な要件となっています。
X-Rayなどを活用したり、ログを読んで何が起こっているかを確認したりと、やる事・やれる事・やらなければならない事がたくさんありますので、チームで分担すると良いでしょう。(本来は4人1チームですが、今回は1人1チームでやりました)
学んだ事/まとめ
後半の方で1位に居座り続けましたが、最後の30分であっという間に追い抜かれてランクは2位という結果になりました。
単にサービスを安定稼働させるだけでは無く、攻めの姿勢も必要なため、奥が深いです。AWS GameDay。
普段業務で運用する機会があまりないため、実際に動いているサービスを止めずに改善していくのがとても楽しかったです。
障害の確認という点でも、目Grepでゴリ押した箇所が多々あったため、即席スクリプトを書いて自動化出来るような人になりたいと思いました。
GameDayでは、「AWSで既に運用されているアプリケーションをどのように改善していくか」を短時間に濃縮していて、めちゃめちゃ楽しく、より深くAWSを学ぶことが出来ますので、機会があれば参加してみて下さい。
Developers.IOにもGameDay体験ブログが多数掲載されていますので、是非合わせてご覧下さい。
普段はre:Inventなどで開催されていますが、日本でもAWSJ主催のイベントが開催される事がありますので、気になった方はウォッチしてみてください。
他にも、技能五輪国際大会 クラウドコンピューティング部門での日本選手も募集していたりします。 Unicorn Rentalsの業務を体験されたい方は是非申し込みしてみてください。